﻿#pragma once
//如何构建一颗二叉树
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
typedef int  BinaryTreeType;
typedef struct BinaryTree {
	struct BinaryTree* left;
	struct BinaryTree* right;
	BinaryTreeType val;
}BNode;
#include"queue.h"
//建树
BNode* StrBinaryTree(BNode* qp,int x);
//前序遍历
void FroOrder(BNode* root);
//中序遍历
void InOrder(BNode* root);
//后序遍历
void AftOrder(BNode* root);
//层序遍历
void SeqOrder(BNode* root);
//判断二叉树是否是完全二叉树
bool IsallTree(BNode* root);
//销毁树
void DestroyTree(BNode* root);
//总节点数
int TreeNode(BNode* root);
//总叶子数
int TreeLeaf(BNode* root);
//第K层的叶子数
//int KTreeLeaf(BNode* root, int* k);
//查找val值为x的节点
BNode* FindNode(BNode* root, int x);